In a flash memory system, when a read error occurs an error recovery request may be generated and forwarded to an error recovery handler. The error recovery handler may utilize one or more error recovery techniques to attempt to recover the data for which the read error occurred. The error recovery handler may select a particular error recovery technique to attempt to recover the data based on the type of read error that occurred.